package org.bet.io;

import java.io.File;
import java.io.IOException;

import org.springframework.core.io.Resource;


public abstract class ResourceUtils extends org.springframework.util.ResourceUtils {
	public static final String SERVER_FILE_URL_PREFIX = "server:";
	
//	private static final Logger logger = Logger.getLogger(ResourceUtils.class);
	
//	public static Resource getResource(String location){
//		try {
//			URL url = new URL(location);
//			return new UrlResource(url);
//		}
//		catch (MalformedURLException ex) {
//			if(location.startsWith(ResourcePatterns.CLASSPATH_URL_PREFIX)){
//				return new ClassPathResource(location);
//			}
//			else{
//				return new StringResource(location);
//			}
//		}
//
//	}
//	
//	public static String resourceAsText(Resource resource){
//		if(resource == null){
//			return null;
//		}
//		try{
//			if(resource instanceof UrlResource){
//				return ((UrlResource)resource).getURL().toExternalForm();
//			}
//			else if(resource instanceof ClassPathResource){
//				return ((ClassPathResource)resource).getPath();
//			}
//			else{
//				return FileCopyUtils.copyToString(new InputStreamReader(resource.getInputStream()));
//			}
//			
//		}
//		catch(Exception e){
//			return null;
//		}		
//	}
//	
	public static String getFileURL(String path) {
		return FILE_URL_PREFIX + path;
	}

//	public static String copyResourceToString(Resource resource, int nRead) {
//		if(resource == null || nRead <= 0){
//			return null;
//		}
//		Reader in = null;
//		Writer out = null;
//		
//		try {
//			in = new BufferedReader(new InputStreamReader(resource.getInputStream()));
//			out = new StringWriter();
//			
//			char[] buffer = new char[nRead];
//			in.read(buffer);
//			out.write(buffer);
//			
//			out.flush();
//			
//			return out.toString();
//		}
//		catch(IOException e){
//			logger.error(e);
//			return null;
//		}
//		finally {
//			try { in.close(); } catch (IOException ex) { logger.warn("Could not close Reader", ex); }
//			try { out.close(); } catch (IOException ex) { logger.warn("Could not close Writer", ex); }
//		}
//		
//	}

	public static boolean existsAsFile(Resource resource) {
		try{
			if(resource != null){
				File file = resource.getFile();
				return file != null && file.exists();
			}
			return false;
		}
		catch(IOException e){
			return false;
		}
	}
	

}
